Problem
isn
Description
给出一个长度为的序列。如果序列不是非降的,你必须从中删去一个数,重复这一操作,直到非降为止。求有多少种不同的操作方案,答案模。
Input
第一行一个整数。
接下来一行个整数,描述。
Output
Sample Input
1 | 4 |
Sample Output
1 | 18 |
Hint
标签:容斥
DP
线段树
Solution
用表示以结尾长度为的不下降子序列个数,则
这个是的,可以用线段树优化到。
用表示长为的不下降子序列个数,则
令为最后留下的不下降序列长度为的可行方案数,那么显然有,考虑如何通过计算。
如果不考虑方案是否可行,则留下的序列有种选法,删除个数有种顺序,于是所有方案(不论是否可行)的数量为。
从所有方案中排除不可行的方案。观察可知这样的方案一定是在剩下一个长度为的不下降序列时多删除了一个数。剩下长度为的不下降序列的方案数为,多删除的数有种选法,于是可知不可行的方案数为。
综上可知,。然后就可以统计答案了。
总复杂度。
Code
1 |
|